package com.example.demo.mapper;

import com.example.demo.entity.Product;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * 商品Mapper接口
 */
@Mapper
@Repository
public interface ProductMapper {
    
    /**
     * 根据商品名称模糊查询
     */
    List<Product> findByNameLike(@Param("name") String name);
    
    /**
     * 根据分类ID查询商品
     */
    List<Product> findByCategoryId(@Param("categoryId") Long categoryId);
    
    /**
     * 根据价格范围查询商品
     */
    List<Product> findByPriceRange(@Param("minPrice") Double minPrice, @Param("maxPrice") Double maxPrice);
    
    /**
     * 查询库存不足的商品
     */
    List<Product> findLowStockProducts(@Param("threshold") Integer threshold);
    
    /**
     * 统计商品总数
     */
    Long countProducts();
    
    /**
     * 根据状态统计商品数量
     */
    Long countByStatus(@Param("status") String status);
    
    /**
     * 批量更新商品状态
     */
    int updateStatusBatch(@Param("ids") List<Long> ids, @Param("status") String status);
    
    /**
     * 根据品牌查询商品
     */
    List<Product> findByBrand(@Param("brand") String brand);
    
    /**
     * 查询热销商品（根据销售数量排序）
     */
    List<Product> findHotProducts(@Param("limit") Integer limit);
}
